package editorsvg.editor.documento;

import java.awt.geom.Rectangle2D;

/**
 * Documento que puede ser editado en el editor.
 * @author Jorge Berjano
 */
public class Documento extends ElementoEditable {

    private String titulo;
    private String descripcion;
    private Rectangle2D extension; // Extension del espacio de coordenadas que contiene
    private MapaSimbolos simbolos = new MapaSimbolos();

    /** Constructor */
    public Documento() {
    }

    @Override
    public void actualizar() {
        super.actualizar();
        simbolos.actualizar();
    }
    
    /**
     * Asigna el Titulo del documento.
     */
    public void setTitulo(String titulo) {
        this.titulo = titulo;
    }

//    public String getViewBox() {
//        return extension.getX() + " " + extension.getY() + " " + extension.getWidth() + " " + extension.getHeight();
//    }
//
//    public void setViewBox(String viewBox) {
//        
//        String values = viewBox.split("[, \t\r\n]+");
//        this.viewBox = viewBox;
//    }


    public Rectangle2D getExtension() {
        return extension;
    }

    public void setExtension(Rectangle2D extension) {
        this.extension = extension;
    }

    @Override
    public Rectangle2D getEncuadre() {
        return extension;
    }

    /**
     * Obtiene el Titulo del documento.
     */
    public String getTitulo() {
        return titulo;
    }

    /**
     * Obtiene la descripciñn que se ha hecho del documento.
     */
    public String getDescripcion() {
        return descripcion;
    }

    /**
     *  Asignae la descripciñn que se ha hecho del documento.
     */
    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }
    
    public MapaSimbolos getSimbolos() {
        return simbolos;
    }

    public ElementoInstanciaSimbolo convertirEnSimbolo(ConjuntoElementos elementosAAgrupar, String nombre) {
        Simbolo simbolo = new Simbolo();

        for (ElementoGrafico elemento : getListaElementos().getLista()) {
            if (elementosAAgrupar.contiene(elemento)) {
                simbolo.agregarElemento(elemento);
            }
        }
        simbolos.agregar(nombre, simbolo);

        ElementoInstanciaSimbolo intancia = new ElementoInstanciaSimbolo(simbolo);
        agregarElemento(intancia);
        borrarElementos(elementosAAgrupar);
        return intancia;
    }
    
    public void borrarSimbolo(String nombre) {
        simbolos.borrar(nombre);
    }
}
